The present invention relates to a system for the parallel execution of processes and, more particularly, to a system for system for parallel execution of processes in a multiprocessor system having plural instruction processors for creating a number of parallel processes so as to minimize the run time and for executing the parallel processes created when a source program written in a high-level language is converted into an object module whereby the created parallel processes are executed in an efficient way.
In a multiprocessor system, a source program written in a high-level language is converted into an object module and the data of the program is processed. In this case, demands have been made to efficiently process the program in a parallel manner by operating plural processors in the system for processing for data of the program.
However, the extent to which parallel operation of the plural processors is performed may vary with the contents of the program or with the contents of the object module which is converted from the source program, so that the process of compiling for converting the source program into the object module is performed by the process of creating a paralleling object segment (parallel process) so as to allow the program processing in each of the processors to be executed in parallel operation to the greatest extent possible. It has further been desired that the process of a processing unit for execution of the object module is created in an optimum number and the control of execution of the parallel processes can be performed in an efficient way.
Heretofore, an algorithm to allocate the parallel processes to the plural processors has been discussed in "Parallel Programming And Compilers, Kluwer Academic Publishers, 1988, pp. 97 to 101. This literature describes run-time task scheduling and loop scheduling as examples of scheduling. The run-time task scheduling is the scheduling process for registering the parallel processes in a queue, allowing an empty processor to fetch the queues in order in a first-in last-out fashion, and executing of the parallel processes, when the paralleling object segment (parallel process) becomes executable in parallel. On the other hand, loop scheduling is a scheduling process for dividing repeats of loops and processing them in parallel when the parallel process (paralleling object segment) is a computation loop (hereinafter referred to as a DO loop) for computing the repeat of the program. This loop scheduling comprises self scheduling in which one time of the processing of the loop repeat is determined as one parallel process, chunk scheduling in which n times (fixed) of the processing of the loop repeats is determined as one parallel process, and guided self scheduling in which one process of the parallel processes is given by a simple formula by having it depend upon the count of the remaining loops. It describes the effect that, from the theoretical analysis of the time required for parallel processing, the guided self scheduling is best when the load. balance of the processors and the divided overhead are taken into consideration.
As described, discussion has been made of the scheduling processes with respect to the loop repeats of each of the parallel executable DO loops in correspondence with the number of the parallel processes to be created when the loop repeats are divided as the parallel processes.
However, the conventional technology as described hereinabove discusses a method of dividing processes into an optimum number of l parallel processes in processing the DO loops by a multiprocessor, however, it is silent about the overhead for processing the parallel processes after the creation of the parallel processes by dividing the loop repeats of the DO loops. Hence, the conventional technology has the problem that performance in execution of the DO loops is worsened when the operation of the DO loops is executed by parallel processing in instances where the operation quantity of the DO loops to be converted into the parallel processes would be smaller than the overhead for parallel processing.